package creational_pattern.singleton;

/**
 * 懒汉模式
 *      静态内部类实现
 *      JVM加载外部类的过程中不会加载静态内部类
 *      只有内部类的属性/方法调用时才会被加载并初始化其静态属性
 *      静态属性被static修饰，只会被实例化一次，严格保证实例化顺序
 */

public class Singleton5 {

    // 私有化构造方法
    private Singleton5() {}

    // 静态内部类
    private static class SingletonHolder {
        // 在内部类中声明并初始化
        private static final Singleton5 instance = new Singleton5();
    }

    // 提供公共的方法
    public static Singleton5 getInstance() {
        return SingletonHolder.instance;
    }
}
